; Dit programma laat de 8 leds van poort D afwisselend branden. Eerst worden de 8 pinnen, 
; waaraan de leds gekoppeld zijn, als uitgang geschakeld. Dan zetten we de eerste Led aan en 
; wachten, dit gebeurd door het aanroepen van de routine delay. De delay routine bestaan uit 
; 2 genestelde lussen die elk 255 keer worden uitgevoerd, waardoor een delay van ongeveer 
; 0.5 sec wordt bekomen. Daarna wordt de volgende Led aangezet enz. Merk op dat de processor 
; in tussen niets anders kan doen, is dit toch gewenst kan er gewerkt worden met een timer 
; die een interrupt genereerd. 


	LIST   P=PIC16F877A
	#INCLUDE P16F877A.INC

	__CONFIG        _CP_OFF & _DEBUG_OFF & _LVP_OFF & _PWRTE_ON & _WDT_OFF & _BODEN_OFF & _HS_OSC


TIMER1          EQU     H'20'   	
TIMER2          EQU     H'21'   

		ORG	0
		GOTO	RESET
		ORG	4
		NOP
		
;		**************************
;               *     main routine:      *
;               **************************
RESET

	BSF	STATUS,RP0
	MOVLW	B'00000000'
	MOVWF	TRISD		; Maak alle pinnen van port D uitgang
	BCF	STATUS,RP0

LOOP	
	MOVLW	B'00000001'	; Zet 1ste Led aan
	MOVWF	PORTD	
	CALL	DELAY		; Wacht

	MOVLW	B'00000010'	; Zet 2de Led aan
	MOVWF	PORTD
	CALL	DELAY		; Wacht

	MOVLW	B'00000100'
	MOVWF	PORTD
	CALL	DELAY

	MOVLW	B'00001000'
	MOVWF	PORTD
	CALL	DELAY

	MOVLW	B'00010000'
	MOVWF	PORTD
	CALL	DELAY

	MOVLW	B'00100000'
	MOVWF	PORTD
	CALL	DELAY

	MOVLW	B'01000000'
	MOVWF	PORTD
	CALL	DELAY

	MOVLW	B'10000000'
	MOVWF	PORTD
	CALL	DELAY
	GOTO	LOOP	


;		**************************
;               *        delay  routine: *
;               **************************
DELAY		CLRWDT
		MOVLW   D'255'          ;*
                MOVWF   TIMER1          ;*
                ;
DELAY2		MOVLW	D'255'
		MOVWF	TIMER2
		DECFSZ  TIMER2,F        ;*
                GOTO    $-1             ;*
                
		DECFSZ	TIMER1,F
		GOTO	DELAY2	
		RETLW   0

	        END                     ; End of source code.
					; Ronald Van Ham


 
